package Heap;

import java.util.PriorityQueue;

/**
 * P215 数组中的第K个最大元素
 */
public class P215 {
    public static void main(String[] args) {
        int[] a={3,2,1,5,6,4};
        int k=2;
        P215Test01 p215Test01=new P215Test01();
        System.out.println(p215Test01.findKthLargest(a, k));
    }
}
/**
 * 利用优先队列一直保持里面是排好序的状态，然后控制为k个，最后结束的时候就是出队就是答案
 * */
class P215Test01{
    public int findKthLargest(int[] nums, int k) {
        if(nums.length==1)
            return nums[0];
        PriorityQueue<Integer> queue=new PriorityQueue<>();
        int len=nums.length;
        for (int num : nums) {
            if(queue.isEmpty()){
                queue.add(num);
            }
            else{
                if (queue.size() < k) {
                    queue.add(num);
                }
                else{
                    if(num>=queue.peek()){
                        queue.poll();
                        queue.add(num);
                    }

                }
            }

        }

        return queue.peek();
    }
}